package sql.ddl;

import sql.ddl.coluna.Coluna;

public class Unique implements TokensSQL {
	String nomeAlias;

	Coluna[] colunas;

	public Unique(boolean defaultConstraint, Coluna... colunas) {
		this.colunas = colunas;
		nomeAlias = defaultConstraint ? montarDefaultConstraint() : null;
	}

	private String montarDefaultConstraint() {
		String alias = "";
		for (Coluna c : colunas)
			alias += c.getNome().toUpperCase() + "_";
		return alias;
	}

	public String codigoSQL() {
		String vConstraint = nomeAlias == null ? NONVALUE : CONSTRAINT + SPACE
				+ nomeAlias + SPACE;
		return vConstraint + UNIQUE + BEGINPARENTES + montarColuans()
				+ ENDPARENTES;
	}

	private String montarColuans() {
		String asColunas = colunas[0].getNome();
		for (int i = 1; i < colunas.length; i++)
			asColunas += VIRGUL + colunas[i].getNome();
		return asColunas;
	}
}
